home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Magazin/MacEasy 52
/
Mac Magazin and MacEasy Magazine CD - Issue 52.iso
/
Updates
/
Stata 5.0 Ado-files
/
ado.sea
/
newado
/
xtreg_fe.ado
< prev
next >
Wrap
Text File
|
1998-11-22
|
5KB
|
198 lines
*! version 1.0.4 10jul1994
program define xtreg_fe
version 4.0
local options "Level(integer $S_level)"
if ("`1'"!="" & substr("`1'",1,1)!=",") {
local varlist "req ex"
local if "opt"
local options "`options' FAST I(string)"
parse "`*'"
parse "`varlist'", parse(" ")
xt_iis `i'
local ivar "$S_1"
tempvar x w touse tmp XB U Ti
tempname sst sse r2
local dv `1'
if "`fast'"!="" {
local fast "*"
}
quietly {
mark `touse' `if'
markout `touse' `varlist' `ivar'
count if `touse'
if _result(1)<=1 { error 2001 }
sort `ivar' `touse'
preserve
keep if `touse'
keep `varlist' `ivar' `userwgt'
`fast' regress `varlist'
`fast' local r2c = _result(7)
summ `1'
scalar `sst' = (_result(1)-1)*_result(4)
by `ivar': gen double `x' = sum(`1')/_n
summ `1'
by `ivar': replace `1' = (`1' - `x'[_N]) + _result(3)
drop `x'
mac shift
while ("`1'"!="") {
by `ivar': gen double `x' = sum(`1')/_n
summ `1'
by `ivar': replace `1' = /*
*/ (`1' - `x'[_N]) + _result(3)
drop `x'
count if `1'!=`1'[1]
if _result(1) == 0 {
replace `1' = 0
}
mac shift
}
count if `ivar'!=`ivar'[_n-1]
local dfa = _result(1)-1
regress `varlist'
local nobs = _result(1)
local dfb = _result(3)
scalar `sse' = _result(4)
local dfe = _result(5) - `dfa'
if `dfe'<=0 | `dfe'==. { noi error 2001 }
* we could avoid this if only we knew dfe in advance
regress `varlist', dof(`dfe')
scalar S_E_sse = `sse'
global S_E_mdf = `dfa' + `dfb'
global S_E_tdf = `nobs'-1-$S_E_mdf
if "`fast'"!="" { exit }
scalar S_E_sst = `sst'
scalar S_E_nobs = `nobs'
global S_E_dfb = `dfb'
scalar S_E_r2w = _result(7)
global S_E_ivar "`ivar'"
global S_E_dfa `dfa' /* # of coefs absorbed */
global S_E_f = _result(6)
scalar `r2'=1-`sse'/`sst'
scalar S_E_f2 = ((`r2'-`r2c')/($S_E_dfa))/ /*
*/ ((1-`r2')/$S_E_tdf)
sort `ivar' /* sic, in case in varlist */
by `ivar': gen long `Ti' = _N if _n==_N
summ `Ti'
scalar S_E_T = _result(6)
scalar S_E_Tbar = _result(3)
if _result(5)==_result(6) {
global S_E_Tcon 1
}
else global S_E_Tcon 0
count if `Ti'!=.
scalar S_E_n = _result(1)
restore
predict double `XB' if `touse'
by `ivar' `touse': gen double `U' = /*
*/ cond(`touse' & _n==_N, /*
*/ sum($S_E_depv)/_n-sum(`XB')/_n,.) if `touse'
summ `U'
scalar S_E_ui=sqrt(_result(4))
by `ivar' `touse': replace `U' = `U'[_N]
corr `XB' `U'
scalar S_E_rho = _result(4)
corr $S_E_depv `XB' if `touse'
scalar S_E_r2o = _result(4)^2
by `ivar' `touse': replace `XB' = /*
*/ cond(_n==_N & `touse', /*
*/ sum(`XB'/_N),.)
by `ivar' `touse': replace `U' = /*
*/ cond(_n==_N & `touse', /*
*/ sum($S_E_depv/_N),.)
corr `U' `XB'
scalar S_E_r2b = _result(4)^2
parse "`varlist'", parse(" ")
mac shift
global S_E_vl "`*'"
global S_E_if "`if'"
global S_E_depv "`dv'"
global S_E_cmd2 "xtreg_fe"
global S_E_cmd "xtreg"
}
}
else {
if ("$S_E_cmd2" !="xtreg_fe") { error 301 }
parse "`*'"
}
if (`level'<10 | `level'>99) { local level 95 }
if $S_E_Tcon {
local Twrd " T"
}
else local Twrd "T-bar"
local dft = scalar(S_E_nobs) - 1
local dfe = `dft' - $S_E_mdf
* local ssm = scalar(S_E_sst - S_E_sse)
* local msm = `ssm'/$S_E_mdf
local ssm .
local msm .
local mse = scalar(S_E_sse)/`dfe'
local p = fprob($S_E_dfb,`dfe',$S_E_f)
di _n in gr _col(46) "Fixed-effects (within) regression"
di in gr /*
*/ "sd(u_$S_E_ivar)" _col(30) "= " in ye %9.0g scalar(S_E_ui) /*
*/ in gr _col(56) "Number of obs =" /*
*/ in ye %8.0f scalar(S_E_nobs)
di in gr /*
*/ "sd(e_${S_E_ivar}_t)" _col(30) "= " /*
*/ in ye %9.0g sqrt(`mse') /*
*/ in gr _col(68) "n =" in ye %8.0f scalar(S_E_n)
di in gr /*
*/ "sd(e_${S_E_ivar}_t + u_$S_E_ivar)" _col(30) "= " /*
*/ in ye %9.0g sqrt(scalar(S_E_ui)^2+`mse') /*
*/ in gr _col(64) "`Twrd' =" in ye %8.0g scalar(S_E_Tbar)
di _n in gr /*
*/ "corr(u_$S_E_ivar, Xb)" _col(30) "= " /*
*/ in ye %9.4f scalar(S_E_rho) /*
*/ in gr _col(56) "R-sq within =" in ye %8.4f scalar(S_E_r2w)
di in gr /*
*/ in gr _col(56) " between =" in ye %8.4f scalar(S_E_r2b)
di in gr /*
*/ in gr _col(56) " overall =" in ye %8.4f scalar(S_E_r2o)
di _n in gr /*
*/ _col(56) "F(" %3.0f $S_E_dfb "," %6.0f `dfe' ") =" /*
*/ in ye %8.2f $S_E_f
di in gr /*
*/ in gr _col(61) "Prob > F =" in ye %8.4f `p' _n
regress , level(`level') nohead
local skip = 8 - length("$S_E_ivar")
local dfa1 = $S_E_dfa + 1
local skip2 = max(13-length("$S_E_dfa"),0)
local todisp "F($S_E_dfa,$S_E_tdf) = "
local skip3 = max(23-length("`todisp'"),0)
di _skip(`skip') in gr "$S_E_ivar |" _skip(`skip3') "`todisp'" /*
*/ in ye %10.3f scalar(S_E_f2) /*
*/ %8.3f fprob($S_E_dfa,$S_E_tdf,scalar(S_E_f2)) /*
*/ in gr _skip(`skip2') "(`dfa1' categories)"
end